using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._DataManagementTools._GeodatabaseAdministration
{
    /// <summary>
    /// <para>Upgrade Dataset</para>
    /// <para>Upgrades the schema of a mosaic dataset, network dataset, annotation dataset, dimension dataset, parcel fabric, parcel fabric for ArcMap, trace network, or utility network to the current ArcGIS release. Upgrading the dataset allows the dataset to use new functionality in the current software release.</para>
    /// <para>将镶嵌数据集、网络数据集、注记数据集、尺寸数据集、宗地结构、ArcMap 宗地结构、追踪网络或公共设施网络的方案升级到当前 ArcGIS 版本。升级数据集允许数据集使用当前软件版本中的新功能。</para>
    /// </summary>    
    [DisplayName("Upgrade Dataset")]
    public class UpgradeDataset : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public UpgradeDataset()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_dataset">
        /// <para>Dataset to upgrade</para>
        /// <para>The dataset that will be upgraded to the current ArcGIS client release.</para>
        /// <para>将升级到当前 ArcGIS 客户端版本的数据集。</para>
        /// </param>
        public UpgradeDataset(object _in_dataset)
        {
            this._in_dataset = _in_dataset;
        }
        public override string ToolboxName => "Data Management Tools";

        public override string ToolName => "Upgrade Dataset";

        public override string CallName => "management.UpgradeDataset";

        public override List<string> AcceptEnvironments => ["workspace"];

        public override object[] ParameterInfo => [_in_dataset, _out_dataset];

        /// <summary>
        /// <para>Dataset to upgrade</para>
        /// <para>The dataset that will be upgraded to the current ArcGIS client release.</para>
        /// <para>将升级到当前 ArcGIS 客户端版本的数据集。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Dataset to upgrade")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_dataset { get; set; }


        /// <summary>
        /// <para>Upgraded Dataset</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Upgraded Dataset")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_dataset { get; set; }


        public UpgradeDataset SetEnv(object workspace = null)
        {
            base.SetEnv(workspace: workspace);
            return this;
        }

    }

}